package com.zhonglian.nourish.utils;

import android.content.Context;
import android.graphics.Typeface;
import android.support.v4.content.ContextCompat;
import android.view.View;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.bigkoo.pickerview.view.TimePickerView;
import com.zhonglian.nourish.R;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;


/**
 * Created : Yx
 * Time : 2020/1/14 18:09
 * Describe :    //选择器
 *     implementation 'com.contrarywind:Android-PickerView:4.1.8'
 */
public class PickerUtils {

    public interface OnSelectedListener {
        void onSelectd(int index);
    }

    public interface OnPickerListener {
        void onSelectd(Date str);
    }

    /**
     * 单列选择器
     *
     * @param context
     * @param items    该list的泛型必须是String或者是实现了IPickerViewData接口的类
     * @param listener
     */
    public static void showSinglePicker(Context context, List items, final OnSelectedListener listener) {
        OptionsPickerView pvOptions = new OptionsPickerBuilder(context, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3, View v) {
                if (listener != null) {
                    listener.onSelectd(options1);
                }
            }
        }).setCancelColor(ContextCompat.getColor(context, R.color.color_888888))//取消按钮文字颜色
                .setSubmitColor(ContextCompat.getColor(context, R.color.color_4081F1))
                .setContentTextSize(16)
                .setTypeface(Typeface.SANS_SERIF)
                .setLineSpacingMultiplier(2.5f)
                .build();
        pvOptions.setPicker(items);
        pvOptions.show();
    }

    /**
     * 单列选择器
     *
     * @param context
     * @param items    该list的泛型必须是String或者是实现了IPickerViewData接口的类
     * @param listener
     */
    public static void showWeelPicker(Context context, List items, final OnSelectedListener listener) {
        OptionsPickerView pvOptions = new OptionsPickerBuilder(context, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3, View v) {
                if (listener != null) {
                    listener.onSelectd(options1);
                }
            }
        }).setCancelColor(ContextCompat.getColor(context, R.color.color_888888))//取消按钮文字颜色
                .setSubmitColor(ContextCompat.getColor(context, R.color.color_4081F1))
                .setTitleBgColor(ContextCompat.getColor(context, R.color.color_white))//标题栏颜色
                .setContentTextSize(16)
                .setTypeface(Typeface.SANS_SERIF)
                .setLineSpacingMultiplier(2.5f)//item间距
                .setCancelText(" ")//取消按钮为空
                .isDialog(true)
                .build();
        pvOptions.setPicker(items);
        pvOptions.show();
    }

    /**
     * 选择生日
     *
     * @param context
     * @param listener
     */
    public static void showBirthdayPicker(Context context, final OnTimeSelectListener listener) {
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        selectedDate.add(Calendar.YEAR, -23);
        endDate.add(Calendar.YEAR, -18);
        startDate.add(Calendar.YEAR, -100);

        TimePickerView pvTime = new TimePickerBuilder(context, listener).setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示
                .setSubmitText("完成")//确认按钮文字
                .setCancelText("取消")
                .setLineSpacingMultiplier(2.5f)
                .setSubmitColor(ContextCompat.getColor(context, R.color.color_4081F1))
                .setCancelColor(ContextCompat.getColor(context, R.color.color_888888))
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 选择 年月日
     *
     * @param context
     * @param listener
     */
    public static void showDatePicker(Context context, final OnTimeSelectListener listener) {
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

//        selectedDate.add(Calendar.YEAR, -23);
//        endDate.add(Calendar.YEAR, -18);
        startDate.add(Calendar.YEAR, -100);

        TimePickerView pvTime = new TimePickerBuilder(context, listener).setType(new boolean[]{true, true, true, false, false, false})// 默认全部显示
                .setSubmitText("完成")//确认按钮文字
                .setCancelText("取消")
                .setLineSpacingMultiplier(2.5f)
                .setSubmitColor(ContextCompat.getColor(context, R.color.color_4081F1))
                .setCancelColor(ContextCompat.getColor(context, R.color.color_888888))
                .setDate(selectedDate)// 如果不设置的话，默认是系统时间*/
                .setRangDate(startDate, endDate)//起始终止年月日设定
                .setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .isDialog(false)//是否显示为对话框样式
                .build();
        pvTime.show();
    }


    /**
     * 底部弹出  时间选择器：
     * 年 月 日 时 分
     *
     * @param mContext
     */
    public static void showTimePickerView(Context mContext, OnPickerListener listener) {
        //时间选择器
        TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                //String sr = getTime(date);
                if (listener != null) {
                    listener.onSelectd(date);
                }
            }
        }).setCancelColor(ContextCompat.getColor(mContext, R.color.color_888888))//取消按钮文字颜色
                .setTextColorCenter(ContextCompat.getColor(mContext, R.color.color_4081F1))
                .setContentTextSize(15)
                .setLineSpacingMultiplier(2.5f)
                .setType(new boolean[]{true, true, true, true, true, false})//年月日时分
                .build();
        pvTime.setDate(Calendar.getInstance());//注：根据需求来决定是否使用该方法（一般是精确到秒的情况），此项可以在弹出选择器的时候重新设置当前时间，避免在初始化之后由于时间已经设定，导致选中时间与当前时间不匹配的问题。
        pvTime.show();
    }

    public static String getTime(Date date) {//可根据需要自行截取数据显示
        LogUtil.iYx("choice date millis: " + date.getTime());
        //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return format.format(date);
    }


}
